A video frame in accordance with the MPEG-2 standard consists of three rectangular matrices of integers: a luminance matrix (Y) and two chrominance matrices (Cr and Cb). The chrominance format specifies the relative sizes of the Y, Cr and Cb matrices. For example, a 4:2:0 chrominance format specifies that the Cb and Cr matrices are one-half the size of the Y-matrix in both horizontal and vertical dimensions, while a 4:2:2 chrominance format specifies that the Cb and Cr matrices are one-half the size of the Y-matrix in the horizontal dimension and the same size as the Y-matrix in the vertical dimension. The video frame is divided into a plurality of macroblocks, with each macroblock including four 8.times.8 blocks of luminance samples and either two 8.times.8 blocks of chroma samples (4:2:0 format) or four 8.times.8 blocks of chroma samples (4:2:2 format). The frame may be a progressive frame, in which all samples of the frame represent the same instant in time, or an interlaced frame, in which alternating lines of the frame correspond to either a top field or a bottom field representing different instances in time. In a given interlaced frame, one of the two fields is meant to be displayed first. This field is referred to as the first field, and may be either the top or bottom field. Unless otherwise indicated, it will be assumed herein that the first field is the top field. Additional details regarding the MPEG-2 standard can be found in an International Standards Organization (ISO) document entitled "Information Technology Generic Coding of Moving Pictures and Associated Audio: Video," ISO/IEC 13818-2, Jan. 20, 1995, which is incorporated herein by reference.
The MPEG-2 video standard generally provides two types of upsampling to convert chroma samples of a video frame from a 4:2:0 chrominance format to a 4:2:2 chrominance format suitable for display. In the case of a progressive frame, the chroma samples are referred to as "frame chroma" and all chroma samples in the frame are utilized for proper upsampling of that frame. In the case of an interlaced frame, half of the chroma samples are used to upsample one field, and the other half of the chroma samples are used to upsample the other field. The upsampling process for interlaced frames can be performed using conventional memory-efficient luminance decoding algorithms without any loss of quality. However, applying such algorithms to a progressive frame generally involves treating the frame chroma as field chroma, which results in a significant degradation in decoded video quality.
FIG. 1 illustrates the steps involved in a conventional memory-efficient luminance decoding algorithm suitable for use with interlaced frames. This algorithm is referred to as a 2.5 framestore decoding algorithm in that it utilizes a 2.0 framestore portion of decoder memory for storing intracoded (I) and forward-only predictive (P) anchor frames, and a 0.5 framestore portion, plus one additional row of macroblock storage, for storing additional macroblock data used in decoding bidirectionally-predictive (B) frames. A framestore refers to an amount of decoder memory suitable for storing the macroblock data of a single frame. The decoding algorithm of FIG. 1 tightly couples the decoding and display operations, particularly in the case of B frames, in order to limit the required amount of decoder memory to a total of 2.5 framestores. The characteristics of I, P and B frames are described in greater detail in the above-cited ISO document.
In accordance with the conventional 2.5 framestore decoding algorithm, I and P frames are decoded and stored as anchor frames in the above-noted 2.0 framestore portion of decoder memory. While a given anchor frame is being decoded, the most recently decoded previous anchor frame is displayed. The decoding process for an interlaced B frame is shown in FIG. 1. The decoding process begins in Step 1 and proceeds to the middle of the frame, until the first half (i.e., first field) of the frame is decoded. The decoding of the current B frame utilizes the previously-stored I and P anchor frames. During Step 1, the second field of the preceding frame in the display order is displayed. The 0.5 framestore memory locations freed up during display of the second field of the previous frame are utilized to store decoded macroblocks for the first field of the current B frame. As noted above, the decode and display operations are tightly coupled, such that whenever 16 lines have been displayed, the corresponding 0.5 framestore memory locations are overwritten by a new row of decoded macroblocks. This assumes that the decoder is fast enough to decode the worst case row of macroblocks in a row time, corresponding to 16 NTSC or
line times. The above-noted additional row of macroblock storage is required because the decoding generally takes place a macroblock at a time, while the display is line-based.
Step 2 indicates that after one field time has elapsed, the first half (i.e., first field) of the current B frame has been decoded and placed in the 0.5 framestore portion of decoder memory, and the display of the first field of the current frame from the 0.5 framestore portion begins. Step 3 indicates that, as noted previously, the decode and display operations are locked such that whenever 16 lines are displayed, the corresponding locations in the 0.5 framestore portion of memory are overwritten with a new row of decoded macroblocks. Step 3 also indicates that the display of the first field of the current frame proceeds. In Step 4, the decoding of the second field of the current frame is complete, the display of the first field of the current frame is complete, and the 0.5 framestore portion of memory contains only the decoded second field of the current frame. In Step 5, the decoding operation proceeds to the next frame in the display order, and display of the second field from the 0.5 framestore portion of memory begins.
The above-described memory-efficient 2.5 framestore algorithm is suitable for use in decoding luminance samples, as well as upsampling field chrominance samples for interlaced frames. However, these and other similar algorithms are generally unsuitable for use in upsampling frame chroma of progressive frames. This is because proper upsampling of frame chroma in progressive frames generally requires the full set of frame chroma, while the algorithm overwrites certain of these values in order to provide improved memory efficiency. Applying the 2.5 framestore algorithm to frame chroma of a progressive frame involves treating the frame chroma as field chroma, which would result in a significant degradation in decoded video quality. Other frame chroma decoding techniques may be able to provide improved video quality for progressive frames, but such techniques are generally less memory efficient than the above-described 2.5 framestore technique. The use of such techniques will generally require an increase in the decoder memory capacity, and may therefore unduly increase the size, cost and complexity of the decoder.
As is apparent from the above, there is a need for a memory-efficient frame chroma decoding technique which is suitable for use with progressive frames and which produces higher quality decoded video than conventional memory-efficient techniques.